#include <vector>
#include <iostream>

using namespace std;

// 返回最多一次可以爬 4 步的情况下，爬 height 高度的方法
int ways(int maxStep, int height) {
  if (height == 0 || height == 1) {
    // 不管一次可以爬多少层，这两层的方法永远都是固定的
    return 1;
  }
  else if (height == 2) {
    return 2;
  }

  // 递归调用
  return ways(height - 1) + ways(height - 2) + ways(height - 3);
}

/*
ways(5)

ways(4) + ways(3)

ways(3) + ways(2) + ways(2) + ways(1)

ways(2) + ways(1) + ways(1) + ways(0) + ways(1) + ways(0) + 1

1 + 1 + 1 + 1 + 1 + 1 + 1 + 1
*/

int main(int argc, char const *argv[])
{
  /* code */
  return 0;
}
